// #include<REG51.H>

// #define dutyTime_us 200
// #define freeTime_us 800

// sbit Output = P2^0;
// unsigned char dutyflag;

// void init_timer()
// {
//     TMOD = 0X01;
//     TH0 = (65536-dutyTime_us)/256;
//     TL0 = (65536-dutyTime_us)%256;
//     EA = 1;
//     ET0 = 1;
//     TR0 = 1;
//     dutyflag = 1;
//     Output = 1;
// }

// void main()
// {
//     init_timer();
//     while(1);
// }

// void timer() interrupt 1
// {
//     if (dutyflag)
//     {
//         TH0 = (65536-freeTime_us)/256;
//         TL0 = (65536-freeTime_us)%256;
//         dutyflag = 0;
//         Output = 0;
//     }else{
//         TH0 = (65536-dutyTime_us)/256;
//         TL0 = (65536-dutyTime_us)%256;
//         dutyflag = 1;
//         Output = 1;
//     }
// }

//利用两个定时器协同工作
#include<reg51.h>
#define dutyTime_us 200
#define freeTime_us 800
sbit Output = P2^0;

void init_timer()
{
    TMOD = 0X11;
    TH0 = (65536-dutyTime_us)/256;
    TL0 = (65536-dutyTime_us)%256;
    TH1 = (65536-dutyTime_us)/256;
    TL1 = (65536-dutyTime_us)%256;
    EA = 1;
    ET0 = 1;
    ET1 = 1;
    TR0 = 1;
    TR1 = 1;
    Output = 0;
}

void main()
{
    init_timer();
    while(1);
}

void dutytimer() interrupt 1
{
    TR1 = 1;
    Output = 0;
    TR0 = 0;
    TH0 = (65536-freeTime_us)/256;
    TL0 = (65536-freeTime_us)%256;
}

void freetimer() interrupt 3
{
    TR0 = 1;
    Output = 1;
    TR1 = 0;
    TH1 = (65536-freeTime_us)/256;
    TL1 = (65536-freeTime_us)%256;
}